/**
 *
 * @returns {Boolean} valid value
 *
 * @properties={typeid:24,uuid:"A67923EB-CF51-4A65-B23B-29D698D98001"}
 */
function tot_valores()
{
	globals.gtotal_valores = 0

	var $cant = foundset.getSize()
	for ( var i = 1 ; i <= $cant ; i++ )
	{
		var $rcd = foundset.getRecord(i)
		globals.gtotal_valores += $rcd.importe
	}
	globals.opago_diferencia(forms.opago_1.fTipoOrden,forms.opago_1.fTotalPago); 
	return true;
}

/**
 * @properties={typeid:24,uuid:"5BB3B6AE-97A5-447F-9623-9453AC5A5CA8"}
 */
function valor_elegido() 
{
	cuentas_cyb_id = null
	if (op_detalle_to_valores.es_cheque == 1) 
	{ // es cheque  
		if (op_detalle_to_valores.es_propio == 1)
		{
			if (fecha_emision_chq == null) // sugerir al dar alta la fecha del dia
			{
				var $hoy = application.getServerTimeStamp()
				$hoy.setHours(0,0,0,0)
				fecha_emision_chq = $hoy
			}
			if (op_detalle_to_valores.es_ch_difer == 0)
			// cheque propio no diferido poner fecha_emision=fecha_pago 
			{
				fecha_pago 	= fecha_emision_chq
				dias_pago 	= 0
			}
		}
		else
		{
			// va a mostrar cheques de terceros con estado en caja y cuenta caja 
			globals.formEnVentana('opago_20','cheques_ter','Elija los cheques')
		}
	}
	else		
	{
		if (op_detalle_to_valores.usa_cta_bco == 1) 
		{// es transferencia 
			cheque_nro = '1'
		} 
		else
		{
			if (op_detalle_to_valores.es_tarjeta == 1)
			{ // es tarjeta
				var $hoy = application.getServerTimeStamp()
				$hoy.setHours(0,0,0,0)
				fecha_emision_chq 	= $hoy
				banco_sucursal 		= null
				banco_id 			= null
			}	
			else
			{// es efectivo
				banco_sucursal 	= null
				banco_id 		= null
			}
		}
	}
	//Si no elige cheques en la pantalla pone el valor_id como null
	if (valor_id != null)
	{
		prepara_renglon()
		elements.importe.requestFocus(true)
	}
}

/**
 * @param {Boolean} imp
 * @param {Boolean} cuenta
 * @param {Boolean} cheque
 * @param {Boolean} fecha_em
 * @param {Boolean} fecha_pag
 * @param {Boolean} dias_pag
 *
 * @properties={typeid:24,uuid:"862CCDFE-DC0F-4BF5-937F-50DB79568034"}
 */
function habilitaCampos(imp,cuenta,cheque,fecha_em,fecha_pag,dias_pag)
{
	elements.importe.editable 			= imp;
	elements.cuenta_cyb_id.editable 	= cuenta;
	elements.cheque_nro.editable 		= cheque;
	elements.fecha_emision_chq.editable = fecha_em; 
	elements.fecha_pago.editable 		= fecha_pag;
	elements.dias_pago.editable 		= dias_pag;
}

/**
 *
 * @properties={typeid:24,uuid:"90D3A3D6-DA5F-4557-93B2-4E9C3AC0D1A0"}
 */
function validar_importe() 
{
	if (foundset.importe == null || foundset.importe == 0)
	{
		globals.DIALOGS.showWarningDialog('Aviso', "Debe ingresar Importe",'OK')
		elements.importe.requestFocus(true)
		return false;
	}
	return true
}

/**
 * Handle changed data.
 *
 * @param {Object} oldValue old value
 * @param {Object} newValue new value
 * @param {JSEvent} event the event that triggered the action
 *
 * @returns {Boolean} valid value
 *
 * @properties={typeid:24,uuid:"D69E7DAF-46E2-4143-AC6B-BCDCDD89EBB0"}
 */
function onDataChange_fecha_emision(oldValue, newValue, event) 
{
	var $fecha = fecha_emision_chq
	$fecha.setHours(0,0,0,0)
	fecha_emision_chq = $fecha
	if (op_detalle_to_valores.es_cheque == 1)
	{
		elements.fecha_pago.enabled = true;
		if (op_detalle_to_valores.es_ch_difer != 1)
		{
			fecha_pago = fecha_emision_chq
			elements.fecha_pago.enabled =  false;
		}
		else
		{ // de diferido
			calcula_fecha_pago();
		}
	}
	else // para fecha pago en transferencia
	{
		if (op_detalle_to_valores.usa_cta_bco == 1)
		{
			fecha_pago = fecha_emision_chq
		}
	}
	return true
}

/**
 * @properties={typeid:24,uuid:"CEAC4EBD-327C-4157-B2C7-A20712A2CB94"}
 */
function prepara_renglon() 
{
	if (op_detalle_to_valores.es_cheque == 1) 
	{ // es cheque  
		if (op_detalle_to_valores.es_propio == 1)
		{
			globals.gcuentas_variable = 1
			var $fecha_pago = true
			var $dias_pago 	= true
			if (op_detalle_to_valores.es_ch_difer == 0)
			// cheque propio no diferido poner fecha_emision=fecha_pago 
			{
				$fecha_pago = false;
				$dias_pago 	= false;
			}
			habilitaCampos(true,true,true,true,$fecha_pago,$dias_pago)
			elements.importe.requestFocus(true)
		}
		else
		{
			globals.gcuentas_variable = 0
			habilitaCampos(false,false,false,false,false,false)
		}
	}
	else		
	{
		if (op_detalle_to_valores.usa_cta_bco == 1) 
		{// es transferencia 
			habilitaCampos(true,true,true,true,false,false)
			globals.gcuentas_variable = 1;
		} 
		else
		{
			if (op_detalle_to_valores.es_tarjeta == 1)
			{ // es tarjeta
				habilitaCampos(true,true,true,true,false,false)
				globals.gcuentas_variable = 2
				
			}	
			else
			{// es efectivo
				habilitaCampos(true,true,false,false,false,false)
				globals.gcuentas_variable = 0
			}
		}
	}
}

/**
 * Handle record selected.
 *
 * @param {JSEvent} event the event that triggered the action
 *
 * @properties={typeid:24,uuid:"4AF07668-3B62-4180-A9EE-6FE5046E38E9"}
 */
function onRecordSelected_detalle(event) 
{
	if (valor_id != null)
		prepara_renglon();
}

/**
 * Handle changed data.
 *
 * @param {Object} oldValue old value
 * @param {Object} newValue new value
 * @param {JSEvent} event the event that triggered the action
 *
 * @returns {Boolean} valid value
 *
 * @properties={typeid:24,uuid:"54AA188B-296A-4768-B74A-DB7E3F57F723"}
 */
function banco_propio(oldValue, newValue, event) 
{
	var estado = ver_saldo();
	if (estado == true)
	{
		if ((op_detalle_to_valores.es_cheque == 1 && op_detalle_to_valores.es_propio == 1) || op_detalle_to_valores.usa_cta_bco == 1)
		{
			//para cheque propio poner banco_id de tabla cuentas_cyb en el detalle 
			banco_id = op_detalle_to_cuentas_cyb.banco_id;
		}
		return true;   
	}                  
	else               
	{                  
		return false;  
	}
}

/**
 *
 * @properties={typeid:24,uuid:"F2DC1814-2C86-4AC4-9891-2B844B634ECC"}
 * @AllowToRunInFind
 */
function ver_saldo() 
{
	// solo buscar saldo de caja cuando es efectivo 
	if (op_detalle_to_valores.es_tarjeta == 1 || op_detalle_to_valores.usa_cta_bco == 1 || op_detalle_to_valores.es_cheque == 1)
		return true
	
	var $query = 'SELECT saldo_efectivo FROM saldos_caja WHERE cuentas_cyb_id = ? AND moneda_id = ?'
	var $args = [cuentas_cyb_id, globals.zparam_moneda_default]
	var $ds = databaseManager.getDataSetByQuery('infocom',$query,$args,-1)
	if ($ds.getMaxRowIndex() > 0)
	{
    	if (importe > $ds.getValue(1,1))
    	{ // importe supera lo existente en caja
    		globals.DIALOGS.showWarningDialog('Aviso','Efectivo a pagar de $' + importe + ' supera el saldo de la caja $' + $ds.getValue(1,1),'OK')
			return false;
    	}
    	else
    		return true;
    }
    else
	{
		globals.DIALOGS.showErrorDialog('Error','No se encontro el saldo de la cuenta', 'OK')
    	return false;
	}   
}

/**
 * Handle changed data.
 *
 * @param {Object} oldValue old value
 * @param {Object} newValue new value
 * @param {JSEvent} event the event that triggered the action
 *
 * @returns {Boolean}
 *
 * @properties={typeid:24,uuid:"0E06C831-75EE-4B80-AC02-2AD1AFA24D76"}
 */
function onDataChange_importe(oldValue, newValue, event) 
{	 
	if (cuentas_cyb_id == null)
	{
		globals.gtotal_valores += newValue - oldValue
	}
	else
	{
		var estado = ver_saldo();
		if (estado == true)
		{	
			globals.gtotal_valores += newValue - oldValue
		}
		else
		{
			return false;
 		}
	}
	globals.opago_diferencia(forms.opago_1.fTipoOrden,forms.opago_1.fTotalPago)
	return true
}

/**
 * Handle changed data.
 *
 * @param {Object} oldValue old value
 * @param {Object} newValue new value
 * @param {JSEvent} event the event that triggered the action
 *
 * @returns {Boolean}
 *
 * @properties={typeid:24,uuid:"034D933B-6A6F-4911-A5D1-32BC8962702A"}
 */
function onDataChange_cheque_nro(oldValue, newValue, event) 
{
	if (op_detalle_to_valores.es_cheque == 1) 
	{ // es cheque  
		if (op_detalle_to_valores.es_propio == 1) // es propio
		{
			globals.duplicacion_cheques(valor_id,banco_id,cheque_nro)
			if (globals.gfilas != 0)  // si es cero, la factura no existe
			{ // ya existe , lo rechaza
				globals.DIALOGS.showWarningDialog('Aviso','Ya existe ' + op_detalle_to_valores.valor_descripcion + ' nro. ' + cheque_nro + ' de banco ' + op_detalle_to_cuentas_cyb.descripcion,'OK')
				return false;
			}
			if (op_detalle_to_valores.es_ch_difer == 1)
			{
				elements.fecha_pago.requestFocus();
			}
		}
	}
	return true
}

/**
 * Handle focus element loosing focus.
 *
 * @param {JSEvent} event the event that triggered the action
 *
 * @returns {Boolean}
 *
 * @properties={typeid:24,uuid:"E67D72EA-7EC2-41B3-B685-7765280F52B2"}
 */
function onFocusLost_fecha_pago(event)  //25/08/2010
{
	if (op_detalle_to_valores.es_cheque == 1) 
	{ // es cheque  
		if (op_detalle_to_valores.es_propio == 1)
		{
			if (op_detalle_to_valores.es_ch_difer == 1) 
			{
				if (fecha_pago == null)
				{
					return false
				}
			}
		}
	}
	return true
}

/**
 * Handle changed data.
 *
 * @param {Object} [oldValue] old value
 * @param {Object} [newValue] new value
 * @param {JSEvent} [event] the event that triggered the action
 *
 * @returns {Boolean}
 *
 * @properties={typeid:24,uuid:"2FE32869-3DC0-403C-815B-F1D467DD2D85"}
 */
function calcula_fecha_pago(oldValue, newValue, event) 
{
	if (newValue <= 0)
	{
		globals.DIALOGS.showErrorDialog('Aviso','Los dias de pago deben ser mayores a 0', 'OK')
		return false
	}
	if (op_detalle_to_valores.es_cheque == 1 && op_detalle_to_valores.es_propio==1 && op_detalle_to_valores.es_ch_difer == 1 )//es cheque propio y diferido
	{
		if (dias_pago != null)
		{
			fecha_pago = fecha_emision_chq;  
			fecha_pago = fecha_pago.setDate(fecha_emision_chq.getDate() + dias_pago);
		}
	}
	return true
}

/**
 * Handle changed data.
 *
 * @param {Date} oldValue old value
 * @param {Date} newValue new value
 * @param {JSEvent} event the event that triggered the action
 *
 * @returns {Boolean}
 *
 * @properties={typeid:24,uuid:"FCFF764C-E03C-4016-B2E1-65937FA9E5DE"}
 */
function onDataChangeFechaPago(oldValue, newValue, event) {
	if (op_detalle_to_valores.es_cheque == 1) 
	{ // es cheque  
		if (op_detalle_to_valores.es_propio == 1)
		{
			if (op_detalle_to_valores.es_ch_difer == 1) 
			{
				var $fecha = new Date(fecha_pago.getFullYear(), fecha_pago.getMonth(), fecha_pago.getDate(),0,0,0,0)
				fecha_pago = $fecha
				if (fecha_pago == null || fecha_pago <= fecha_emision_chq)
				{
					globals.DIALOGS.showErrorDialog('Aviso','Por favor, elija una fecha de pago vàlida', 'OK')
					return false
				}
				dias_pago = globals.diferenciaDias(fecha_pago, fecha_emision_chq)
			}
		}
	}
	return true
}
